一直以来对于return()
函数很困惑。在代码到低是写一个return()
比较好,还是写多个return
比较好呢?纠结的很。今天偶然间在网上看到一个问题:一个函数里面用一个return 好 还是多个return 好?,感觉有点明白了。在上一篇博客解析fivenum
函数的源码中,fivenum
函数也多次“用到”return
,当然只是隐式的调用return
函数。那么问题来了?我到底该用哪一种呢???
我自己写了一个函数,然后用microbenchmark
包输出两个函数(各执行10000次)的执行时间,比较哪个更好,以后就用哪个了。^_^
|
|
|
|
|
|
|
|
|
|
载入microbenchmark
包
|
|
|
|
结论:两个函数在执行速度上并没有太大的差别。但是就简洁性而言,第一种多个
return()
更好。
下面来再来看看if...else
语句的例子
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
下面看看这两个函数的性能差异
|
|
|
|
结论:上面的两个函数性能差异也不是太大。但是就就简洁性而言,没有
else
的版本更好。其实,这里的else
根本就是多余的。因为一旦if
条件的结果为真,程序会直接返回return()
中的值。后面的代码不回被执行。只不过加了else
代码更加清晰一些。
当然,下面的这种情况加else
更好。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
结论:下面的加
else
的函数明显快于上面的没有加else
的函数。
这是因为这里的判定条件为3 < 6
,显然这个为真,但是第一个会接着执行下面的判断函数,直到把所有的判定条件全部执行完毕为止。最终返回为真的结果。但是第二个函数就不一样了,因为后面出现了else
语句,编译器一看到这个else
,就知道后面的都不用执行了。所以第二个函数要快一些。
写到这里,心里终于有数了。在函数中,就用多个return
吧,当然退而求其次,也可以选择if...else...return
。